package com.kx.face.util;

import com.baidu.aip.face.AipFace;
import com.baidu.aip.face.MatchRequest;
import com.kx.base.util.FileBase64Util;
import org.json.JSONObject;

import java.util.ArrayList;

/**
 * 集成百度人脸服务的工具类
 *
 * @Author Sun
 * @Date 2021/7/21 17:21
 */
public class BaiduUtil {
    /**
     * AAP_ID
     */
    public static final String APP_ID = "24579838";
    /**
     * APP_KEY
     */
    public static final String APP_KEY = "s2fm4pGPtBoejjLd8PfufKmf";
    /**
     * SECRET_KEY
     */
    public static final String SECRET_KEY = "k8kmXLBKg6hMGjW9S8TlZxQGHbWCjnmE";

    /**
     * 人脸识别的客户端 初始化
     * 百度的人脸识别服务器，在百度的机房
     * 我们要做人脸识别，一定要跟百度服务器通讯
     * 这种情况下，算不算微服务？不算微服务，只能叫远程调用
     * 一般远程调用分为两种方式：
     * WebService（老系统）
     * Http API （新系统）
     * <p>
     * 下面的AipFace就是对http接口的封装
     * 我们只需要调用AipFace的方法，就相当于网络访问了。
     * 进而达到远程调用百度人脸识别服务器的目的。
     */
    private static AipFace client = new AipFace(APP_ID, APP_KEY, SECRET_KEY);

    /**
     * 对比两个人脸是不是同一个人
     * 照片用Base64编码进行处理（传输）。
     */
    public static void isOne(String image1,String image2){
        MatchRequest req1 = new MatchRequest(image1, "BASE64");
        MatchRequest req2 = new MatchRequest(image2, "BASE64");
        ArrayList<MatchRequest> requests = new ArrayList<>();
        requests.add(req1);
        requests.add(req2);
        JSONObject res = client.match(requests);
        System.out.println(res.toString(2));
    }


    public static void main(String[] args) {
        String image1= FileBase64Util.image2Base64("C:\\Users\\孙晋超\\Pictures\\Saved Pictures\\2.jpg");
        String image2= FileBase64Util.image2Base64("C:\\Users\\孙晋超\\Pictures\\Saved Pictures\\1.jpg");
        isOne(image1,image2);
    }
}
